@烟雨
2年前 提问
1个回答

微服务的安全服务隔离有哪些方式

帅末
2年前

微服务的安全服务隔离有以下方式:

  • 线程隔离:线程隔离主要通过线程池(Thread Pool)进行隔离。在实际使用时,我们会把业务进行分类并交给不同的线程池进行处理,当某个线程池处理一种业务请求发生问题时,不会将故障扩散到其他线程池,也就不会影响到其他线程池中所运行的业务,从而保证其他服务可用。

  • 进程隔离:进程隔离比较好理解,就是将系统拆分为多个子系统来实现物理隔离,各个子系统运行在独立的容器和JVM中,通过进程隔离使得某一个子系统出现问题不会影响到其他子系统。

  • 集群隔离:集群隔离是进程隔离的升级版,随着系统的发展,单实例服务无法满足需求了,此时需要使用集群机制来提升系统容量。将某些服务单独部署成集群,或对于某些服务可以进行分组集群管理,某一个集群出现问题之后就不会影响到其他集群,从而实现了故障隔离。

  • 机房隔离:对于大型高可用系统,如果有条件,会进行多机房部署,每个机房的服务都有自己的服务分组,本机房的服务应该只调用同机房服务。当某一个机房出现故障时,可以将请求快速切到另一个机房从而确保服务继续可用。

  • 读写隔离:读写隔离也是常见的隔离技术,当用于读取操作的服务器出现故障时,写服务器照常可以运作,反之也是一样。对于离线分析类的应用场景而言,读写隔离可以很好地控制读取操作可能形成的瓶颈对写入操作造成的影响。实际运用中,读写隔离可以有不同的表现形式。例如,当使用Mongodb进行海量数据存储时,可以采用热库和存档库概念,将新写入的数据同时存储到热库和存档库。热库只存储最近一个月的数据,而存档库则保存所有的历史数据。当我们想对历史数据进行离线处理时,可以确保热库不受影响。